6f97fac207857c73f074e455f3cae1116c80888e,src/main/java/org/red5/io/amf/Output.java,Output,writeObject,#Object#,302

Before Change


    /** {@inheritDoc} */
    @SuppressWarnings({ "rawtypes" })
    public void writeObject(Object object) {
        if (checkWriteReference(object)) {
            return;
        }
        storeReference(object);
        // Create new map out of bean properties
        BeanMap beanMap = new BeanMap(object);
        // Set of bean attributes
        Set set = beanMap.keySet();
        if ((set.size() == 0) || (set.size() == 1 && beanMap.containsKey("class"))) {
            // BeanMap is empty or can only access "class" attribute, skip it
            writeArbitraryObject(object);
            return;
        }

        // Write out either start of object marker for class name or "empty" start of object marker
        Class<?> objectClass = object.getClass();
        if (!objectClass.isAnnotationPresent(Anonymous.class)) {
            buf.put(AMF.TYPE_CLASS_OBJECT);
            putString(buf, Serializer.getClassName(objectClass));
        } else {
            buf.put(AMF.TYPE_OBJECT);
        }

        if (object instanceof ICustomSerializable) {
            ((ICustomSerializable) object).serialize(this);
            buf.put((byte) 0x00);
            buf.put((byte) 0x00);
            buf.put(AMF.TYPE_END_OF_OBJECT);
            return;
        }

        // Iterate thru entries and write out property names with separators
        for (Object key : set) {
            String fieldName = key.toString();
            log.debug("Field name: {} class: {}", fieldName, objectClass);

            Field field = getField(objectClass, fieldName);
            Method getter = getGetter(objectClass, beanMap, fieldName);

            // Check if the Field corresponding to the getter/setter pair is transient
            if (!serializeField(objectClass, fieldName, field, getter)) {
                continue;
            }

            putString(buf, fieldName);
            Serializer.serialize(this, field, getter, object, beanMap.get(key));
        }
        // Write out end of object mark
        buf.put((byte) 0x00);
        buf.put((byte) 0x00);
        buf.put(AMF.TYPE_END_OF_OBJECT);
    }

After Change


    /** {@inheritDoc} */
    @SuppressWarnings({ "rawtypes" })
    public void writeObject(Object object) {
        if (!checkWriteReference(object)) {
            storeReference(object);
            // create new map out of bean properties
            BeanMap beanMap = new BeanMap(object);